package com.yang.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * 相当于spring里面的applicationContext.xml
 *
 * @author shiwen
 * @date 2020/10/12
 */

@Configuration
public class ConfigBean {

    // 配置负载均衡实现restTemplate, ribbon和eureka整合后, 就不需要关心ip地址和端口号了
    // IRule 路由网关 都继承自AbstractLoadBalancerRule
    // RoundRobinRule 轮询
    // RandomRule 随机
    // AvailabilityFilteringRule : 会先过滤掉, 跳闸, 访问故障的服务~ 对剩下的进行轮询
    // RetryRule 会先按照轮询获取服务, 如果服务获取失败, 则会在指定的时间内重试
    @Bean
    @LoadBalanced       // 通过使用restTemplate实现负载均衡 ribbon
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

    ///**
    // * 随机算法替代轮询, loadBalanced其实是template的配置（默认就是轮询）
    // */
    //@Bean
    //public IRule myRule() {
    //    return new RandomRule();
    //}

}